package com.endes.android.view.aplicacion;

import java.util.List;

import com.endes.android.R;
import com.endes.android.context.Aplicacion;
import com.endes.android.context.Preferencias;
import com.endes.android.entidades.Sampsel;
import com.endes.android.model.service.AsighService;
import com.endes.android.model.service.EntrevistadoraService;
import com.endes.android.model.service.SampselService;
import com.endes.android.model.service.SupervisoraService;
import com.endes.android.view.hogar.adapter.AsignacionHogaresAdapter;

import commons.util.android.UtilAndroid;
import commons.util.android.widget.IntegerSpinner;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TableRow;

public class AsignacionHogaresActivity 
//extends EndesActivity 
extends Activity
implements View.OnClickListener, OnItemSelectedListener
{
	
	//private ListView listView;
	private LinearLayout listLayout;
	
	private Button btnBuscar;
	private Button btnAsignar;
	private Button btnMostrar;
	
	private EditText etConglomerado;
	private IntegerSpinner spEntrevistadora;
	private IntegerSpinner spSupervisora;
	
	private TableRow trConglomerado;
	private TableRow trEntrevistadora;
	private boolean mostrar;	
	
	private AsighService asighService = Aplicacion.getInstance().getAppContext().asighService;
	private SampselService sampselService = Aplicacion.getInstance().getAppContext().sampselService;
	private EntrevistadoraService entrevistadoraService = Aplicacion.getInstance().getAppContext().entrevistadoraService;
	private SupervisoraService supervisoraService = Aplicacion.getInstance().getAppContext().supervisoraService;
		
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
 
        this.setContentView(R.layout.app_asignacion_hogares);
        
        btnBuscar = (Button) findViewById(R.id.btnBuscar);
        btnBuscar.setOnClickListener(this);
        
        btnAsignar = (Button) findViewById(R.id.btnAsignar);
        btnAsignar.setOnClickListener(this);
        
        btnMostrar = (Button) findViewById(R.id.btnMostrar);
        btnMostrar.setOnClickListener(this);
        
        trConglomerado = (TableRow) findViewById(R.id.trConglomerado);
        trEntrevistadora = (TableRow) findViewById(R.id.trEntrevistadora);        
 
        //this.listView = (ListView) findViewById(R.id.listHogares);
        this.listLayout = (LinearLayout) findViewById(R.id.listHogares);
        
        etConglomerado = (EditText) findViewById(R.id.txtConglomerado);
        
        spSupervisora = new IntegerSpinner((Spinner) findViewById(R.id.spnSupervisora));
        spSupervisora.setItems(supervisoraService.findItems(), R.layout.spinner_layout);
        spSupervisora.getSpinner().setOnItemSelectedListener(this);
        
        spEntrevistadora = new IntegerSpinner((Spinner) findViewById(R.id.spnEntrevistadora));
        
        if(Preferencias.getCodigoConglomerado(this)>0) {
        	etConglomerado.setText(Preferencias.getCodigoConglomerado(this)+"");
        	llenarListadoSampsel();
        }
        
        if(Preferencias.getCodigoSupervisora(this)>0) {
        	spSupervisora.setValorInt(Preferencias.getCodigoSupervisora(this));
        }
        
  

        /*
        // Register a callback to be invoked when an item in this AdapterView
        // has been clicked
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view,
                    int position, long arg) {
 
                // Sets the visibility of the indeterminate progress bar in the
                // title
                setProgressBarIndeterminateVisibility(true);
                // Show progress dialog
                progressDialog = ProgressDialog.show(MainActivity.this,
                        "ProgressDialog", "Loading!");
 
                // Tells JavaScript to open windows automatically.
                webView.getSettings().setJavaScriptEnabled(true);
                // Sets our custom WebViewClient.
                webView.setWebViewClient(new myWebClient());
                // Loads the given URL
                Item item = (Item) listView.getAdapter().getItem(position);
                webView.loadUrl(item.getUrl());
            }
        });
 		*/
    }
	
	private void llenarListadoSampsel() {
		String s = etConglomerado.getText().toString();
		if(!s.isEmpty()) {
			listLayout.removeAllViews();
			
			List<Sampsel> lista = sampselService.findByConglomerado(Integer.parseInt(s));
			BaseAdapter ad = new AsignacionHogaresAdapter(this, lista);				
			for(int i=0; i<lista.size(); i++) {
				this.listLayout.addView( ad.getView(i, null, null) );
			}
		} 
		
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btnMostrar:	
			this.ocultarOpciones(!mostrar);			
			break;
		case R.id.btnBuscar:
			
			llenarListadoSampsel();	
			UtilAndroid.ocultarTeclado(etConglomerado);			
			break;
		case R.id.btnAsignar:
			
			//DATA A ACTUALIZAR
			String columnas[] = {"XINTCODE"};
			String data[] = new String[1];
			data[0] = spEntrevistadora.getValorInt()+"";
			
			//CONDICION DE DATA A ACTUALIZAR
			String columnasWhere[] = {"XCLUSTER","XNUMBER","XHOME"};
			String dataWhere[] = new String[3];
						
			//RECORRIENDO EL LISTADO
			//View lista =  listView;
			LinearLayout lista =  listLayout;
			for(int i=0; i<lista.getChildCount(); i++) {
				View ch = lista.getChildAt(i);
				CheckBox cb = (CheckBox) ch.findViewById(R.id.chbSeleccione);
				if(cb.isChecked()) {
					Integer id = Integer.parseInt( (String) cb.getTag() );							
					try {						
						//sampselService.update(columnas, data, "id="+id);
						Sampsel s = sampselService.findById(id);
						dataWhere[0] = s.getConglomerado()+"";
						dataWhere[1] = s.getVivienda()+"";
						dataWhere[2] = s.getHogar()+"";
						asighService.saveOrUpdate(columnas, data, columnasWhere, dataWhere);
						//asighService.saveOrUpdate(columnas, data, s.getCriterioWhereConglomeradoViviendaHogar());
					} catch (Exception e) {
						Aplicacion.log(e);
					}
				}
			}			
			
			llenarListadoSampsel();	
			
			try {
				Aplicacion.getInstance().getAppContext().crearBackupEndes(this);
			} catch (Exception e) {
				Aplicacion.log(e);
			}			
			
			break;		
		default:
			break;
		}
		
	}

	private void ocultarOpciones(boolean ocultar) {		
		int v = ocultar ? LinearLayout.GONE : LinearLayout.VISIBLE;
		trConglomerado.setVisibility(v);
		trEntrevistadora.setVisibility(v);		
		mostrar = ocultar;
	}

	@Override
	public void onNothingSelected(AdapterView<?> parent) {

	}
	
	@Override
	public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
		
		switch (parent.getId()) {
		case R.id.spnSupervisora:
			Integer idSuperv = spSupervisora.getValorInt();
			llenarEntrevistadoras(idSuperv);
			if(idSuperv>0)
				ocultarOpciones(true);
			
	        if(Preferencias.getCodigoEntrevistadora(this)>0) {
	        	spEntrevistadora.setValorInt(Preferencias.getCodigoEntrevistadora(this));
	        }
			break;

		default:
			break;
		}
	}

	private void llenarEntrevistadoras(Integer idSuperv) {        
        spEntrevistadora.setItems(entrevistadoraService.findItemsByCodigoSupervisora(idSuperv), R.layout.spinner_layout);		
	}


	


}
